A Uniform Resource Identifier (“URI”), as the term is used herein, is a string of characters used to identify a resource on a computing device and/or a network, such as the Internet. Such identification enables interaction with representations of the resource using specific protocols. “Schemes” specifying a syntax and associated protocols define each URI.
A Uniform Resource Locator (“URL”) is a URI that specifies where an identified resource is available and the mechanism for retrieving it. URLs are commonly used to identify web page resources on the World Wide Web. For example, the URL “http://www.wikipedia.org/” identifies a resource (Wikipedia's home page) and implies that a representation of that resource (such as the home page's current HTML code, as encoded characters) is obtainable via the Hypertext Transfer Protocol (“HTTP”) networking protocol from a network host named www.wikipedia.org.
The generic syntax for URI schemes is defined in Request for Comments (“RFC”) memorandum 3986 published by the Internet Engineering Task Force (“IETF”). According to RFC 3986, a URI (including a URL) consists of four parts:
<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]
FIG. 1 shows an exemplary prior-art URL 100 conforming to this structure.
A URI (e.g., URI 100) begins with a scheme name 105 that refers to a specification for assigning identifiers within that scheme. The scheme name 105 consists of a letter followed by any combination of letters, digits, and the plus (“+”), period (“.”), or hyphen (“-”) characters; and is terminated by a colon (“:”).
The hierarchical portion 120 of the URL is intended to hold identification information that is hierarchical in nature. Often this part is delineated with a double forward slash (“//”), followed by an optional authority part 110 and an optional path 115.
The optional authority part 110 holds an optional user information part (not shown) terminated with “@” (e.g. username:password@), a hostname (i.e., domain name or IP address, here “example.com”), and an optional port number preceded by a colon “:” (not shown).
The path part 115 is a sequence of one or more segments (conceptually similar to directories, though not necessarily representing them) separated by a forward slash (“/”). If a URI includes an authority part, then the path part may be empty.
The optional query portion 125 is delineated with a question mark and contains additional identification information that is not necessarily hierarchical in nature. Together, the path part 115 and the query portion 125 identify a resource within the scope of the URI's scheme and authority. The query string syntax is not generically defined, but is commonly organized as a sequence of zero or more <key>=<value> pairs 130, 135 separated by a semicolon or ampersand, for example:
key1=value1;key2=value2;key3=value3 (Semicolon), orkey1=value1&key2=value2&key3=value3 (Ampersand)
Much of the above information is taken from RFC 3986, which provides additional information related to the syntax and structure of URIs. RFC 3986 is hereby incorporated by reference, for all purposes.
Many web-enabled services are available via a web interface, designed to be used in a general-purpose web browser, as well as via one or more platform-specific, special-purpose applications. For example, in many desktop operating systems, YouTube videos (provided by YouTube, LLC of San Bruno, Calif.) are typically accessed via YouTube's web interface in a general-purpose web browser, whereas on iOS devices (e.g., iPhones, iPads, and the like, provided by Apple Inc. of Cupertino, Calif.), YouTube videos are typically accessed via a special-purpose iOS-native YouTube application.
Similarly, the Twitter messaging service may be accessed via a web interface in a general-purpose browser, or in any number of special-purpose applications available for many different platforms.
For yet another example, on many platforms, an Application-store may be accessible (possibly with limited functionality) via a web browser, but certain operations (e.g., purchasing an application) may be available only via a special-purpose Application-store application.
The iOS operating system includes special provisions for handling http-scheme links to resources such as YouTube videos and Google Maps locations (provided by Google Inc. of Mountain View, Calif.). For example, when an iOS application requests that a http-scheme link to a YouTube video be opened on the device, the standard iOS URL-handling routines will detect that the link is to a YouTube video (e.g., by inspecting the authority, path, and/or query portions of the URL), and invoke the special-purpose YouTube application, rather than a general-purpose web browsing application. Google Maps http-scheme links are specially detected and handled by a standardly-installed Maps application.
In many cases, a developer or other individual may wish to provide a locator or identifier for a particular resource that may be accessed via either a general-purpose web browser or a special-purpose application. For example, a developer may wish to provide a single URL that can be used to view an application either in an Application-store application or, if the Application-store application is not available on a requesting device, in a web browser.
Similar behavior exists on iOS devices for URLs to applications in the iTunes Store, but it relies on special behavior implemented by the http server responding to an URL request. For example, the following URL will be accessible via an iTunes store application on devices that have it installed; otherwise, the URL provides content via a general-purpose web browser: http://itunes.apple.com/us/artist/uplake-media-11c/id317833657?ign-mpt=uo%3D4
When a device requests the identified resource, the http server returns a HTML page that includes javascript code for detecting whether the iTunes application is installed on the requesting device. If the javascript code indicates that the iTunes application is installed, another piece of javascript launches the iTunes application with the appropriate parameters. Otherwise, an html page is displayed in the general-purpose web browser.
For yet another example, an individual may wish to provide a single URL that can be used to view a particular social network discussion either in a dedicated social network application (if one is installed) or in a web browser (if no dedicated application is installed). However, http-scheme links to social network hosts may not be specially handled by standard URL-handling routines on any given device, and without altering the behavior of a social network host's web server (e.g., by returning javascript code that detects whether a special-purpose application is installed and redirects accordingly), it is currently difficult or impossible to provide a single URL that can alternatively invoke a special-purpose application (if installed on a device) or a general-purpose application (otherwise).